import router from '@/router'
import { useLoginUserStore } from '@/stores/userLogin'
import { message } from 'ant-design-vue'

let firstFetchLoginUser = true

/**
 * 编写全局权限管理器
 */
router.beforeEach(async (to, from, next) => {
  const loginUserStore = useLoginUserStore();
  let loginUser = loginUserStore.loginUser;
  // 在页面刷新时，等待登录用户信息加载完成后再获取登录用户信息
  if (firstFetchLoginUser) {
    await loginUserStore.fetchLoginUser();
    loginUser = loginUserStore.loginUser;
    // 保证刷新时只需获取一次登陆用户信息
    firstFetchLoginUser = false;
  }

  // 进行权限的校验
  const toPath = to.fullPath;
  // 判断是否为管理员权限显示的页面
  if(toPath.startsWith('/admin')){
    if(!loginUser || loginUser.userRole !== 'admin'){
      message.error('无权限');
      next(`/user/login?redirect=${toPath}`);
      return;
    }
  }
  //判断是否为图片相关得登录显示的页面
  if(toPath.startsWith('/picture')){
    if(!loginUser || (loginUser.userRole !== 'admin' && loginUser.userRole !== 'user')){
      message.error('请先登录');
      next(`/user/login?redirect=${toPath}`);
      return;
    }
  }
  // 放行
  next();
})


export default router;
